﻿using Iworld.Author.Service.Client.Export;
using Iworld.Author.Service.Client.Import;
using Iworld.basis.Service;
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;

namespace Iworld.Author.Service.Client
{
    /// <summary>
    /// 游戏前台用户服务
    /// </summary>
    [ServiceContract]
    public interface IAuthorService
    {
        #region 查询数据
        /// <summary>
        /// 保持心跳
        /// </summary>
        /// <param name="import">数据集</param>
        /// <returns></returns>
        [OperationContract]
        NormalResult<HeartbeatExport> KeepHeartbeat(KeepHeartbeatImport import);

        /// <summary>
        /// 获取用户自身信息
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        NormalResult<AuthorExport> GetUserSelfInfo(GetUserSelfInfoImport import);

        /// <summary>
        /// 充值记录
        /// </summary>
        /// <param name="import"></param>
        /// <returns></returns>
        [OperationContract]
        PageResult<RechargeRecordExport> GetRechargeRecords(GetRechargeRecordsImport import);

        /// <summary>
        /// 获取金币赠送记录
        /// </summary>
        /// <param name="import"></param>
        /// <returns></returns>
        [OperationContract]
        PageResult<GiveGoldsRecordExport> GetGiveGoldsRecords(GetGiveGoldsRecordsImport import);


        /// <summary>
        /// 获取帐变记录
        /// </summary>
        /// <param name="import"></param>
        /// <returns></returns>
        [OperationContract]
        PageResult<GoldsChangeRecordExport> GetGoldsChangeRecords(GetGoldsChangeRecordsImport import);

        /// <summary>
        /// 获取提现记录
        /// </summary>
        /// <param name="import"></param>
        /// <returns></returns>
        [OperationContract]
        PageResult<WithdrawalsRecordExport> GetWithdrawalsRecordExports(GetWithdrawalsRecordExportsImport import);

        #endregion

        #region 操作

        /// <summary>
        /// 提现申请
        /// </summary>
        /// <param name="import"></param>
        /// <returns></returns>
        [OperationContract]
        NormalResult CreateWithdrawalsRecord(CreateWithdrawalsRecordImport import);

        /// <summary>
        /// 登陆
        /// </summary>
        /// <param name="import">数据集</param>
        /// <returns>返回操作结果（如成功将返回档次登陆的身份标识）</returns>
        [OperationContract]
        NormalResult<string> Login(LoginImport import);

        /// <summary>
        /// 赠送金币
        /// </summary>
        /// <param name="import"></param>
        /// <returns></returns>
        [OperationContract]
        NormalResult GiveGolds(GiveGoldsImport import);


        /// <summary>
        /// 编辑用户基本信息
        /// </summary>
        /// <param name="import"></param>
        /// <returns></returns>
        [OperationContract]
        NormalResult EditBaseInfo(EditAuthorBaseInfoImport import);

        /// <summary>
        ///修改密码
        /// </summary>
        /// <param name="import"></param>
        /// <returns></returns>
        [OperationContract]
        NormalResult EditPassword(EditAuthorPasswordImport import);

        /// <summary>
        /// 修改二级密码
        /// </summary>
        /// <param name="import"></param>
        /// <returns></returns>
        [OperationContract]
        NormalResult EditTwoLevelPassword(EditTwoLevelPasswordImport import);

        /// <summary>
        /// 添加或编辑银行
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        NormalResult AddOrEditBank(AddOrEditBankImport import);

        /// <summary>
        /// 充值
        /// </summary>
        /// <param name="import"></param>
        /// <returns></returns>
        [OperationContract]
        NormalResult Recharge(RechargeImport import);

        /// <summary>
        /// 注册用户
        /// </summary>
        /// <param name="import"></param>
        /// <returns></returns>
        [OperationContract]
        NormalResult Register(RegisterImport import);
        #endregion

    }
}
